#include <cmath>
#include <iostream>
#include <vector>
#include <queue>
#include <algorithm>
#include <map>
#include <set>
#include <cstring>
#define endl "\n"
using namespace std;
int n,k;
int dfs(int a)//还原逆向结题
{
	if(a<=n)
	{
		return n-a;
	}
	if(a%2!=0)
	{
		return min(dfs(a+1)+1,dfs(a-1)+1);//奇数下先转换为偶数因为奇数必定是原来的偶数+-得到的
	}
	else
	return min(dfs(a/2)+1,a-n);
}
int main()
{
	cin>>n>>k;
	int ss=0;
	if(n==0)//n==0,无法传送只可以向前移动1
	{
		n++;
		ss++;
	}
	cout<<dfs(k)+ss<<endl;
	return 0;
}
